package demo6;

import java.util.Scanner;



/**
 *  2024/6/11 MyLinkedList类 Cjj
 */
public class MyLinkedList<E> {


    /**定义一个私有的内部类,作为链表的结点**/

    static class Node<E>{
        E data;
        Node<E> next;

        /**
         *Node泛型类
         */
        public Node(E data,Node<E> next){
              this.data=data;
              this.next=next;
        }
    }

    /**
     *add让用户添加链表的结点
     * 用户输入exit
     * 返回链表的头结点
     */
    public Node<E> add(){
        Node<E> head=null;

        Scanner sc = new Scanner(System.in);
        while (true){
            System.out.println("请你输入结点的值：");
            String data = sc.next();
            if(data.equals("exit")) break;
            if(head ==null){
                head = new Node(data, null);
             }else {
                //往后面插入结点。（尾插法）
                Node<E> temp=head;
                //让temp走到尾部结点
                while (temp.next!=null){
                   temp= temp.next;
                }
          //把当前结点创建出来,加入到尾部结点
                temp.next=new Node(data,null);

            }
        }
        return head;
    }



    /**
     * forEach方法,接收新链表
     */
    public void  forEach(Node<E> head){
         if(head==null){
             System.out.println(head);
             return;
         }
         while (head!=null){
             System.out.println(head.data+" ");
            head = head.next;
         }

    }
}
